home *** CD-ROM | disk | FTP | other *** search
RISC OS BBC BASIC V Source | 1996-05-03 | 3.8 KB | 145 lines |
- > ProCopy Logfile tools
- !version$ = "1.10, April 1996"
- Temporary program only - full Wimp app with options eventually (!)
- When run this will concatentate and sort any
- ProCopy logfiles in it's Logs sub-directory.
- "Hourglass_Smash":
- '"Error "+
- )+" : "+
- memsz%=
- -&8000:buffer%=
- namebuff% &2000, temp% 16
- assemble
- "OS_GBPB",12,"<ProCopyLog$Dir>",namebuff%,200,0,&2000,0
- ,,,num%
- num%=0
- '"No Logfiles found!":
- '"Procopy Logfile Tools - "+version$
- '"Please select -"
- " 1. Sort by disc name"
- " 2. Sort by number of copies"'
- :func%=
- func%>48
- func%<51
- func%
- "Sorting by disc name"'
- "Sorting by number of copies"'
- "Hourglass_On"
- n_ptr%=namebuff%
- - Load the file and expand lines to 20 chars
- file%=1
- T%=n_ptr%!20
- n_ptr%+=24:N%=n_ptr%
- ?n_ptr%>13:n_ptr%+=1:
- :?n_ptr%=13
- #& filename$="<ProCopyLog$Dir>."+$N%
- "OS_File",17,filename$
- F%,,,,len%
- %; mem_end%=
- wkspc(len%*2+&2000)-256:slot%=mem_end%-&8000
- mem_end%<0
- 0,"Not enough RAM to process file "+$N%:
- "Processing file "+$N%;
- I%=0
- len%*2+&2000
- buffer%!I%=&20202020
- "OS_File",16,filename$,buffer%,0
- ,4 out_start%=(buffer%+len%+7)
- 3:op%=out_start%
- ip%=buffer%:end%=ip%+len%
- ip%<end%
- sl%=op%
- ?ip%>31:?op%=?ip%:ip%+=1:op%+=1:
- 1! op%=sl%+20:sl%?19=10:ip%+=1
- op%>mem_end% mem_end%=
- wkspc(slot%+&2000)-256:slot%=mem_end%+&8000:
- mem_end%<0
- 0,"Not enough RAM to process file "+$N%
- - Sort the list
- 6" elements%=(op%-out_start%)
- J%=out_start%
- "OS_HeapSort",elements%,buffer%
- (3<<30),4,0,out_start%,20
- - concatentate the list
- ;" ip%=out_start%:op%=out_start%
- <! end%=elements%*20+out_start%
- count%=
- get_count(op%)
- ip%<end%
- ip%+=20
- (!op%=!ip%)
- (op%!4=ip%!4)
- (op%!8=ip%!8)
- count%+=
- get_count(ip%)
- D) $(op%+13)=
- " "+
- (count%),6)
- op%?19=10
- op%+=20
- G$
- J%=0
- 4:op%!J%=ip%!J%:
- count%=
- get_count(op%)
- func%
- no need to do any more
- sort_numbers
- "OS_File",10,filename$,&FFF,0,out_start%,op%
- n_ptr%=(n_ptr%+4)
- " - Done"
- "Hourglass_Off"
- '"Finished"
- sort_numbers
- Z!elements%=(op%-out_start%)
- "OS_HeapSort",elements%,buffer%
- (3<<30),code%,0,out_start%,20
- get_count(p%)
- p%+=18:
- ?p%=32:=1
- ?p%<>32:p%-=1:
- "OS_ReadUnsigned",10,p%
- ,,F%
- wkspc(sz%)
- "Wimp_SlotSize",memsz%+sz%,-1
- e%<(memsz%+sz%):=
- :=e%+&8000
- assemble
- code% &400
- PASS=0
- P%=code%
- [OPT PASS
- o5.numbers ;enter with r0, r1 = pointers to objects
- p0 stmfd r13!,{r4,r5} ;store r4,r5
- q9 add r0,r0,#19 ;point to end of line
- r2 ldrb r4,[r0,#-1]! ;get lsd in r4
- ldrb r3,[r0,#-1]!
- mov r3,r3,lsl #6
- orr r4,r4,r3
- ldrb r3,[r0,#-1]!
- mov r3,r3,lsl #12
- orr r4,r4,r3
- ldrb r3,[r0,#-1]!
- mov r3,r3,lsl #18
- orr r4,r4,r3
- ldrb r3,[r0,#-1]!
- mov r3,r3,lsl #24
- orr r4,r4,r3
- 9 add r1,r1,#19 ;point to end of line
- 2 ldrb r5,[r1,#-1]! ;get lsd in r5
- ldrb r3,[r1,#-1]!
- mov r3,r3,lsl #6
- orr r5,r5,r3
- ldrb r3,[r1,#-1]!
- mov r3,r3,lsl #12
- orr r5,r5,r3
- ldrb r3,[r1,#-1]!
- mov r3,r3,lsl #18
- orr r5,r5,r3
- ldrb r3,[r1,#-1]!
- mov r3,r3,lsl #24
- orr r5,r5,r3
- cmp r5,r4
- ldmfd r13!,{r4,r5}
- mov pc,r14
-